using Abp.Application.Services;
using Abp.Application.Services.Dto;
using SOEI.Solution.Customized.Dtos;
using SOEI.Solution.Integratedes.Organization.Dtos;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace SOEI.Solution.Integratedes.Organization
{
    public interface IOursEconomyPersonAppService : IApplicationService
    {
        #region -------------------------------------------------辅助工具生成---------------------------------------------- 
        /// <summary>
        /// 获取的分页列表集合
        ///</summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<OEconomyPersonListDto>> GetPaged(GetOEconomyPersonsInput input);


        /// <summary>
        /// 通过指定id获取ListDto信息
        /// </summary>
        Task<OEconomyPersonListDto> GetById(EntityDto<string> input);

        /// <summary>
        /// 返回实体的EditDto
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<GetOEconomyPersonForEditOutput> GetForEdit(EntityDto<string> input);

        /// <summary>
        /// 添加或者修改的公共方法
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task CreateOrUpdate(CreateOrUpdateOEconomyPersonInput input);


        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task Delete(EntityDto<string> input);


        /// <summary>
        /// 批量删除
        /// </summary>
        Task BatchDelete(List<string> input);

        #endregion

        #region -------------------------------------------------用户自定义------------------------------------------------
        /*请在此扩展应用服务接口*/

        /// <summary>
        /// 获取待选择的列表
        ///</summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<OEconomyPersonListDto>> GetSelectPaged(GetOEconomyPersonsInput input);

        /// <summary>
        /// 接受人员
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task AcceptPerson(EntityDto<string> input);

        /// <summary>
        ///【新模式许可】获取正式人员清单和承诺书清单
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        //[AbpAuthorize(OEconomyPersonPermissions.Node)]
        Task<PagedResultDto<OEconomyPersonListDto>> GetNewLicenseInitPaged(GetOEconomyPersonsInput input);

        /// <summary>
        ///【新模式许可】 批量删除Member的方法
        /// </summary>
        //[AbpAuthorize(OEconomyPersonPermissions.Node)]
        Task LicenseBatchApply(LicenseAppliesInput input);

        /// <summary>
        /// 这是一个测试方法之后删掉
        /// </summary>
        /// <param name="OriginalNumber"></param>
        /// <returns></returns>
        Task GetTestFunction(string OriginalNumber);

        #endregion
    }
}
